﻿using Microsoft.Win32;
using System;
using System.Management;
using System.Net.NetworkInformation;

namespace LinkyPOS.Class
{
    internal class lisanslama
    {
        private string mac { get; set; }

        public string anakartno { get; set; }

        private string harddiskno { get; set; }

        public string serialno { get; set; }// textboxlardan alinan serial numarasi

        private string bayino { get; set; }

        private string uruntip { get; set; }

        private string registryno { get; set; }

        private string servername { get; set; }

        public string versyon { get; set; }

        public bool lisanslanma_durumu { get; set; }

        public bool kaydolma_durumu { get; set; }

        public bool odemedurumu { get; set; }

        // sistem parametrelerini bulan kodlar
        public lisanslama()
        {
            try
            {
                // mac adresini bulan kodlar
                foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
                {
                    OperationalStatus ot = nic.OperationalStatus;
                    if (nic.OperationalStatus == OperationalStatus.Up)
                    {
                        mac = nic.GetPhysicalAddress().ToString();
                        break;
                    }
                }
                // HDD seriali bulan kodlar
                ManagementObjectSearcher Arama_obje = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
                foreach (System.Management.ManagementObject diskim in Arama_obje.Get())
                {
                    if (diskim["SerialNumber"] != null)
                    {
                        harddiskno = Convert.ToString(diskim["SerialNumber"]);
                    }
                }
                // Anakart Seriali Bulan kodlar
                ManagementObjectSearcher MOS = new ManagementObjectSearcher("Select * From Win32_BaseBoard");
                foreach (ManagementObject getserial in MOS.Get())
                {
                    anakartno = getserial["SerialNumber"].ToString();
                }
            }
            catch (Exception)
            {
            }
        }

        public void kaydol()
        {
            // bir web servis kullanarak kaydolmasini

            try
            {
                // burada direk  sqlservere yazacak bservis ile ugrasmayacagiz

                // kontrol et service adresi de[';meli
                //linkycortex.kernel krn = new linkycortex.kernel();
                //registryno = krn.linkyregister(bayino, harddiskno, anakartno, mac);
                kaydolma_durumu = true;
            }
            catch (Exception)
            {
                kaydolma_durumu = false;
            }
        } // bu seviye sistem kendini kernele tanitir

        public void lisanla()
        {
            try
            {
                // linkycortex.kernel krn = new linkycortex.kernel();

                // burada durum bilgisi giriliyor
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyPOS").SetValue("durum", 1);
                // ilk gun basi islemi yapiliyor
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyDay").SetValue("date", DateTime.Now);
                //MessageBox.Show("Linky Kuru Temizleme Otomasyonuna Hoşgeldiniz");
                //MainMenuStrip.Enabled = true;
                // linkypos aktiflestiriliyor
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyPOS").SetValue("activeposition", 255);
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyPOS").SetValue("registryno", "linky360");
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyPOS").SetValue("versyon", "V3.0");
                //this.Close();

                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyPOS").SetValue("durum", 1);
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyDay").SetValue("date", DateTime.Now);
                //MessageBox.Show("Linky Kuru Temizleme Otomasyonuna Hoşgeldiniz");
                //MainMenuStrip.Enabled = true;
                Registry.CurrentUser.CreateSubKey("LinkyControl").CreateSubKey("LinkyPOS").SetValue("activeposition", 255);
                //this.Close();

                // durum bilgisi true dondurur;
                lisanslanma_durumu = true;
            }
            catch (Exception e)
            {
                // hata ise durum bilgisi hata dondurur

                lisanslanma_durumu = false;
            }
        } // bu seviyede sistem kendisini lisanlar durum bilgisini dondurur

        public void durum() // bu seviyede sistem kendisini kernelden kontrol ettirir duruma gore devamlilik saglanir veya iptal ettirilir
        {
            // bu metod internet olmasi durumunda calismalidir ancak internet yoksa kendisini 1 yillik kontrolden gecirmelidri

            // servisle bağlantı kodları burada yazılacak
            try
            {
                // HDD seriali bulan kodlar
  
             
                 
          
              
            }
            catch (Exception)
            {
                // internet yoksa catche düşer
               
            }
        }

        public void versyon_cek()
        {
            // servis versyon metodlari yazilmadigi icin  henuz duruyor
        }

        public void versyon_kontrol()
        {
            try
            {
              //  versyon = Registry.CurrentUser.OpenSubKey("LinkyControl").OpenSubKey("LinkyPOS").GetValue("versyon").ToString();
            }
            catch (Exception)
            {
            }
        }
    }
}